home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / awt / SequencedEvent.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  2.5 KB  |  122 lines

  1. package java.awt;
  2.  
  3. import java.util.LinkedList;
  4. import sun.awt.AppContext;
  5. import sun.awt.SunToolkit;
  6.  
  7. class SequencedEvent extends AWTEvent implements ActiveEvent {
  8.    private static final long serialVersionUID = 547742659238625067L;
  9.    // $FF: renamed from: ID int
  10.    private static final int field_0 = 1006;
  11.    private static final LinkedList list = new LinkedList();
  12.    private final AWTEvent nested;
  13.    private AppContext appContext;
  14.    private boolean disposed;
  15.  
  16.    public SequencedEvent(AWTEvent var1) {
  17.       super(var1.getSource(), 1006);
  18.       this.nested = var1;
  19.       synchronized(SequencedEvent.class) {
  20.          list.add(this);
  21.       }
  22.    }
  23.  
  24.    public final void dispatch() {
  25.       try {
  26.          this.appContext = AppContext.getAppContext();
  27.          if (getFirst() != this) {
  28.             if (EventQueue.isDispatchThread()) {
  29.                EventDispatchThread var11 = (EventDispatchThread)Thread.currentThread();
  30.                var11.pumpEvents(1007, new 1(this));
  31.             } else {
  32.                while(!this.isFirstOrDisposed()) {
  33.                   synchronized(SequencedEvent.class) {
  34.                      try {
  35.                         SequencedEvent.class.wait(1000L);
  36.                      } catch (InterruptedException var8) {
  37.                         break;
  38.                      }
  39.                   }
  40.                }
  41.             }
  42.          }
  43.  
  44.          if (!this.disposed) {
  45.             KeyboardFocusManager.getCurrentKeyboardFocusManager().setCurrentSequencedEvent(this);
  46.             Toolkit.getEventQueue().dispatchEvent(this.nested);
  47.          }
  48.       } finally {
  49.          this.dispose();
  50.       }
  51.  
  52.    }
  53.  
  54.    private static final boolean isOwnerAppContextDisposed(SequencedEvent var0) {
  55.       if (var0 != null) {
  56.          Object var1 = var0.nested.getSource();
  57.          if (var1 instanceof Component) {
  58.             return ((Component)var1).appContext.isDisposed();
  59.          }
  60.       }
  61.  
  62.       return false;
  63.    }
  64.  
  65.    public final boolean isFirstOrDisposed() {
  66.       if (this.disposed) {
  67.          return true;
  68.       } else {
  69.          return this == getFirstWithContext() || this.disposed;
  70.       }
  71.    }
  72.  
  73.    private static final synchronized SequencedEvent getFirst() {
  74.       return (SequencedEvent)list.getFirst();
  75.    }
  76.  
  77.    private static final SequencedEvent getFirstWithContext() {
  78.       SequencedEvent var0;
  79.       for(var0 = getFirst(); isOwnerAppContextDisposed(var0); var0 = getFirst()) {
  80.          var0.dispose();
  81.       }
  82.  
  83.       return var0;
  84.    }
  85.  
  86.    final void dispose() {
  87.       synchronized(SequencedEvent.class) {
  88.          if (this.disposed) {
  89.             return;
  90.          }
  91.  
  92.          if (KeyboardFocusManager.getCurrentKeyboardFocusManager().getCurrentSequencedEvent() == this) {
  93.             KeyboardFocusManager.getCurrentKeyboardFocusManager().setCurrentSequencedEvent((SequencedEvent)null);
  94.          }
  95.  
  96.          this.disposed = true;
  97.       }
  98.  
  99.       if (this.appContext != null) {
  100.          SunToolkit.postEvent(this.appContext, new SentEvent());
  101.       }
  102.  
  103.       SequencedEvent var6 = null;
  104.       synchronized(SequencedEvent.class) {
  105.          SequencedEvent.class.notifyAll();
  106.          if (list.getFirst() == this) {
  107.             list.removeFirst();
  108.             if (!list.isEmpty()) {
  109.                var6 = (SequencedEvent)list.getFirst();
  110.             }
  111.          } else {
  112.             list.remove(this);
  113.          }
  114.       }
  115.  
  116.       if (var6 != null && var6.appContext != null) {
  117.          SunToolkit.postEvent(var6.appContext, new SentEvent());
  118.       }
  119.  
  120.    }
  121. }
  122.